//
//  ViewController.m
//  uireview
//
//  Created by 楼楚 on 15/10/29.
//  Copyright © 2015年 Chu Lou. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()<UITextFieldDelegate>

@end

@implementation ViewController



/*
 1.UIButton     ->UIControl->UIView
 1.1 设置控件的状态
 启用、禁用
 @property(nonatomic,getter=isEnabled) BOOL enabled;
 选中、不选中
 @property(nonatomic,getter=isSelected) BOOL selected;
 高亮、不高亮
 @property(nonatomic,getter=isHighlighted) BOOL highlighted;
 
 1.2 设置控件内容的布局
 
 垂直居中方向
 @property(nonatomic) UIControlContentVerticalAlignment contentVerticalAlignment;
 水平居中方向
 @property(nonatomic) UIControlContentHorizontalAlignment contentHorizontalAlignment;
 
 1.3
 添加、删除监听方法
 - (void)addTarget:(nullable id)target action:(SEL)action forControlEvents:(UIControlEvents)controlEvents;
 - (void)removeTarget:(nullable id)target action:(nullable SEL)action forControlEvents:(UIControlEvents)controlEvents;

 2.UILabel      ->UIView
 3.UIImageView  ->UIView
 4.UITextField  ->UIView
 
 
 
 ***代理（delegate）设计模式 在oc中使用最为广泛的一种设计模式
 1>代理的用处
 *监听那些不能通过addTarget监听的事件
 *主要用来负责在两个对象之间，发生某些事件时，来传递消息或者数据
 
 2>代理的实现步骤
 成为（子）控件的代理     
 遵守协议－>利用智能提示，快速编写代码
 实现协议方法
 */
- (void)viewDidLoad {
    [super viewDidLoad];
    UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd ];
    btn.center = self.view.center;
    [self.view addSubview:btn];
    
//      将监听方法，注册到“运行循环”，当按钮被点击后，“运行循环”通知视图控制器执行@selector的方法
    [btn addTarget:self action:@selector(Click) forControlEvents:UIControlEventTouchUpInside];
    
//    UITextField *textField =[[UITextField alloc]initWithFrame:CGRectMake(20, 20, 280, 40)];
    
}
- (void)Click
{
    NSLog(@"%s",__func__);
}
#pragma mark -文本框代理方法
/*成为代理之后要做的事情，以及如何工作
 1.协议：预先定义的一些方法名，每个方法对应不同的事件，但是没有具体的体现
  遵守协议 就可以利用智能提示 方便地敲出协议中定义的方法；编写协议方法的具体实现
 */
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSLog(@"%@  %@",NSStringFromRange(range),string);
//    限制输入的长度
    int loc = range.location;
    return  (loc <6);
//    if (loc < 6) {
//        return YES;
//    }else{
//        return NO;
//    }
//    如果返回no,就不向文本框中添加字符
    return NO;
}

@end
